package com.qr.service.wmyw;

import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.mapping.ResultMapping;
import cn.krui.helper.db.DataPage;
import com.qr.bean.wmyw.QrGenerateid;
import com.qr.bean.wmyw.QrGenerateidView;

/**
 * @author: zc
 * email: zc8023zs@163.com
 * create_time: 2020/8/13 10:22:35
 */
public interface QrGenerateidService {

    /**
     * 分布式自增主键新增
     * @param model 分布式自增主键实体
     * @return 影响行数
     */
    Integer add(QrGenerateid model);

    /**
     * 分布式自增主键修改byid
     * @param model 分布式自增主键实体
     * @return 影响行数
     */
    Integer update(QrGenerateid model);

    /**
     * 分布式自增主键修改by条件
     * @param model 分布式自增主键实体
     * @param where 分布式自增主键条件
     * @return 影响行数
     */
    Integer update(QrGenerateid model, Wrapper<QrGenerateid> where);
	
    /**
     * 分布式自增主键修改by条件-自动封装Wrapper
     * @param model 分布式自增主键实体
     * @param where 分布式自增主键条件
     * @return 影响行数
     */
    Integer update(QrGenerateid model, QrGenerateid where);

    /**
     * 分布式自增主键修改bySQL *version_id = newVersion where version_id = oldVersion
     * @param fields 修改的数据 col1=xx,col2=yy
     * @param where 参数化条件 col1=#{col1}
     * @param params 条件参数 col1=xx
     * @return 影响行数
     */
    Integer update(Map<String, Object> fields, String where, Map<String, Object> params);

    /**
     * 分布式自增主键删除byid
     * @param id 分布式自增主键主键
     * @return 影响行数
     */
    Integer del(int id);

    /**
     * 分布式自增主键删除by条件
     * @param where 分布式自增主键条件
     * @return 影响行数
     */
    Integer del(Wrapper<QrGenerateid> where);
	
    Integer del(QrGenerateid where);

    /**
     * 分布式自增主键批量删除byid
     * @param ids 分布式自增主键主键集合
     * @return 影响行数
     */
    Integer del(List<Integer> ids);

    /**
     * 分布式自增主键批量删除bymap条件
     * @param map 分布式自增主键map条件
     * @return 影响行数
     */
    Integer del(Map<String,Object> map);

    /**
     * 分布式自增主键详情byid
     * @param id 分布式自增主键主键
     * @return 分布式自增主键详情
     */
    QrGenerateidView info(int id);

    /**
     * 分布式自增主键详情by条件
     * @param where 分布式自增主键条件
     * @return 分布式自增主键详情
     */
    QrGenerateidView info(Wrapper<QrGenerateidView> where);
	
    QrGenerateidView info(QrGenerateidView where);

    /**
     * 分布式自增主键详情bySQL
     * @param columns  列名col1,col2,col3^
     * @param where 条件 col1=#{col1}
     * @param params col1:xx
     * @param mappings col1->col1
     * @return
     */
    QrGenerateid info(String columns, String where, Map<String, Object> params, ResultMapping mappings);

    /**
     * 分布式自增主键批量查询byid
     * @param ids 分布式自增主键主键集合
     * @return 分布式自增主键列表
     */
    List<QrGenerateidView> select(List<Integer> ids);

    /**
     * 分布式自增主键批量查询by条件
     * @param where 分布式自增主键条件
     * @return 分布式自增主键列表
     */
    List<QrGenerateidView> select(Wrapper<QrGenerateidView> where);

    List<QrGenerateidView> select(QrGenerateidView where);

    /**
     * 分布式自增主键批量查询bymap条件
     * @param map 分布式自增主键map条件
     * @return 分布式自增主键列表
     */
    List<QrGenerateidView> select(Map<String,Object> map);

    /**
     * 分布式自增主键批量查询b条件分页
     * @param page 分页条件
     * @param where 查询条件
     * @return
     */
    IPage<QrGenerateidView> select(IPage<QrGenerateidView> page, Wrapper<QrGenerateidView> where);

	IPage<QrGenerateidView> select(IPage<QrGenerateidView> page, QrGenerateidView where);

    /**
     * 分布式自增主键查询记录数
     * @param where 查询条件
     * @return
     */
    Integer selectCount(Wrapper<QrGenerateidView> where);
	
    Integer selectCount(QrGenerateidView where);

    /**
     * 分布式自增主键批量查询bySQL条件分页
     * @param columns 列col1,col2,col3……
     * @param where 条件col1=#{col1} and col2=#{col2}
     * @param orderBy 排序字段
     * @param params 参数化 col1=xx
     * @param pageNumber 分页页码
     * @param pageSize 每页行数
     * @param mappings 查询列和实体映射
     * @return 分页之后的数据含总行数
     */
    DataPage<QrGenerateidView> select(String columns, String where, String orderBy, Map<String, Object> params, int pageNumber, int pageSize, ResultMapping mappings);

    /**
     * 分布式自增主键批量查询bySQL条件
     * @param columns 列col1,col2,col3……
     * @param where 条件col1=#{col1} and col2=#{col2}
     * @param params 参数化 col1=xx
     * @param mappings 查询列和实体映射
     * @return 栏目扩展列表
     */
    List<QrGenerateidView> select(String columns, String where, Map<String, Object> params, ResultMapping mappings);
}